using System.Collections.Generic;
using System.Linq;

namespace Nice157Advices.Advices
{
    /// <summary>
    /// 19、使用更有效的对象和集合初始化
    /// </summary>
    public static class _19
    {
        /**
         * 初始化设定项绝不仅仅是为了对象和集合初始化的方便，它更重要的作用是为LINQ查询中的匿名类型进行属性的初始化。
         * 由于LINQ查询返回的集合中匿名类型的属性都是只读的，如果需要为匿名类型属性赋值，或者增加属性，只能通过初始化设定项来进行。初始化设定项还能为属性使用表达式。
         */
        public static void Go ()
        {
            var list = new List<Person> ()
            {
                new Person { Name = "capdiem", Age = 24 },
                new Person { Name = "lena", Age = 7 }
            };

            var newList = from u in list select new { u.Name, AgeScope = u.Age >= 18 ? "Old" : "Young" };
            foreach (var item in newList)
            {
                System.Console.WriteLine ($"name: {item.Name} {item.AgeScope}");
            }

        }

        private class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}